# Liste des fichiers pour que chacun des modules puisse compiler 
export SRCS_CORE = livre.c film.c musique.c ensemble.c arbre.c regroupement.c date.c oeuvre.c public.c pays.c genre.c activite.c personne.c utilitaireString.c label.c langue.c temps.c typeedition.c collection.c listefichier.c
export SRCS_DB = database.c dbregroupement.c dboeuvre.c dbgenre.c dbdate.c dbactivite.c dbfilm.c dblabel.c dblangue.c dblivre.c dbmusique.c dbpays.c dbtemps.c dbtypeedition.c dbcollection.c dbpersonne.c
export SRCS_GTK = gtkArbre.c gtkInfo.c gtkPrincipal.c gtkMenu.c gtkAjout.c ajoutArbre.c ajoutPanel.c listeGenreAjout.c listePersonneAjout.c

# Variables de compilation
export CC=gcc
export CFLAGS= -std=c99 -W -Wall -pedantic -ansi -ggdb -g -O3 `pkg-config --cflags glib-2.0` `pkg-config --cflags id3tag`
export LDFLAGS=-lsqlite3 `pkg-config --libs glib-2.0` `pkg-config --libs id3tag`
export GTKCFLAGS = `pkg-config --cflags gtk+-3.0`
export GTKLDFLAGS = `pkg-config --libs gtk+-3.0`
export HTMLCFLAGS = `pkg-config --cflags --libs webkitgtk-3.0`

# Définit les sous dossiers de l'application
CORE_DIR=src/core
DB_DIR=src/db
GTK_DIR=src/gtk

# Définit le répertoire obj pour que les Makefiles des sous répertoire puissent créer les objets au bon endroit
export OBJ_DIR_SUB=../../obj

# Définit le répertoire bin pour que les autres Makefiles puisse compiler dans ce répertoire de sortie
export BIN_DIR_SUB=../../bin

# Définit le répertoire bin et obj
BIN_DIR =bin
OBJ_DIR =obj
SRC_DIR =src
# Définit les différents nom de sortie de l'application
FINAL_TARGET_CORE=foppyCore
FINAL_TARGET_DB=foppyDb
FINAL_TARGET_GTK=foppy

# Définit les sources associées aux sorties de l'application
SRC_CORE = src/mainCore.c
SRC_DB = src/mainDb.c
SRC_GTK = src/mainGtk.c

# Définit une liste d'objet pour pouvoir compiler
OBJ_CORE = $(SRCS_CORE:%.c=$(OBJ_DIR)/%.o)
OBJ_DB = $(SRCS_DB:%.c=$(OBJ_DIR)/%.o)
OBJ_GTK = $(SRCS_GTK:%.c=$(OBJ_DIR)/%.o)

EXEC=

all: gtk

core:
	(cd $(CORE_DIR) && $(MAKE))
	(cd $(DB_DIR) && $(MAKE))
	$(CC) $(CFLAGS) $(SRC_CORE) $(OBJ_CORE) $(OBJ_DB) -o $(BIN_DIR)/$(FINAL_TARGET_CORE) $(LDFLAGS)

db:
	(cd $(DB_DIR) && $(MAKE))
	(cd $(CORE_DIR) && $(MAKE))
	$(CC) $(CFLAGS) $(LDFLAGS) $(SRC_DB) $(OBJ_CORE) $(OBJ_DB) -o $(BIN_DIR)/$(FINAL_TARGET_DB)

gtk:
	(cd $(CORE_DIR) && $(MAKE))
	(cd $(DB_DIR) && $(MAKE))
	(cd $(GTK_DIR) && $(MAKE))
	$(CC) $(CFLAGS) $(GTKCFLAGS) $(SRC_GTK) $(OBJ_GTK) $(OBJ_CORE) $(OBJ_DB) -o $(BIN_DIR)/$(FINAL_TARGET_GTK) $(LDFLAGS) $(GTKLDFLAGS) $(HTMLCFLAGS)

clean:
	rm -f $(OBJ_DIR)/*.o

mproper:
	rm -f $(BIN_DIR)/foppy*
